package jiangzuomanage.view;

import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import jiangzuomanage.dao.UserDao;
import jiangzuomanage.model.User;

/**
 * @Description 登陆主界面
 */
public class UserFrame extends JFrame implements ActionListener {
	// 定义变量
	private JLabel jLabelAccout, jlLabelpass;// 账号 密码标签
	private JButton loginBtn, registBtn;// 登陆 注册按钮
	private JTextField jFieldAccout, jFieldpass;// 账号 密码文本框
	private List<User> users;// 用來存储用户得列表
	// 账户 密码变量
	private String accout;
	private String pass;
	// 初始化窗体

	public void init() {
		//// 从数据库载入用户
		UserDao userDao = new UserDao();
		users = userDao.findAll();

		FlowLayout f = new FlowLayout();// 流式佈局
		f.setAlignment(FlowLayout.LEFT);// 设置组件的对齐方式，默认为居中显示组件
		f.setHgap(30);// 设置组件的水平间距
		f.setVgap(30);// 设计组件的垂直间距，水平和垂直间距默认为5像素
		jLabelAccout = new JLabel("账  号");
		add(jLabelAccout);
		jFieldAccout = new JTextField(12);// 输入框 参数代表长度
		add(jFieldAccout);
		jlLabelpass = new JLabel("密  码");
		add(jlLabelpass);
		jFieldpass = new JTextField(12);// 输入框 参数代表长度
		add(jFieldpass);
		loginBtn = new JButton("登陆");// 直接在创建时候给定参数
		loginBtn.addActionListener(this);// 设置事件监听
		loginBtn.setActionCommand("login");// 设置监听识别命令
		add(loginBtn);
		registBtn = new JButton();
		registBtn.setText("注册用户");// 也可以单独给名称
		registBtn.addActionListener(this);// 设置事件监听
		registBtn.setActionCommand("regist");// 设置监听识别命令
		add(registBtn);
		setLayout(f);// 设置组件容器采用流布局管理器
		// 初始化窗口
		this.setTitle("讲座系统-登陆界面");// 窗口标题
		this.setSize(300, 220);// 窗体大小
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置可关闭进程
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;// 获得屏幕宽度
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;// 获得屏幕高度
		this.setLocation((width - 500) / 2, (height - 400) / 2);// 剧中显示
		this.setResizable(true);// 可改变窗体大小
		this.setVisible(true);// 设置窗体可见
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals("login")) {// 登陆
			accout = jFieldAccout.getText().trim().toString();// 获取账户，去掉后面得空格
			pass = jFieldpass.getText().trim().toString();// 获取密码，去掉后面得空格
			if (accout.equals("") || pass.equals("")) {
				JOptionPane.showMessageDialog(null, "用户名和密码不能为空", "信息", JOptionPane.INFORMATION_MESSAGE);
			} else {
				boolean flag = false;// 登陆成功标志
				// 遍历用户集合查看有没有账户
				for (int i = 0; i < users.size(); i++) {
					if (users.get(i).getAccout().equals(accout) && users.get(i).getPass().equals(pass)) {
						this.dispose();
						new JiangZuoFrame().init();// 讲座窗口
						flag = true;
						break;// 结束循环
					}
				}
				if (!flag) {
					JOptionPane.showMessageDialog(null, "账户或密码错误", "信息", JOptionPane.INFORMATION_MESSAGE);
				}
			}

		} else if (e.getActionCommand().equals("regist")) {
			accout = jFieldAccout.getText().trim().toString();// 获取账户，去掉后面得空格
			pass = jFieldpass.getText().trim().toString();// 获取密码，去掉后面得空格
			if (accout.equals("") || pass.equals("")) {
				JOptionPane.showMessageDialog(null, "用户名和密码不能为空", "信息", JOptionPane.INFORMATION_MESSAGE);
			} else {
				boolean flage = false;// 账户是否重复标志
				for (int i = 0; i < users.size(); i++) {
					if (users.get(i).getAccout().equals(accout)) {
						JOptionPane.showMessageDialog(null, "账户重复", "信息", JOptionPane.INFORMATION_MESSAGE);
						flage = true;
					}
				}
				if (!flage) {// 如果沒有重複
					User user = new User(accout, pass);
					UserDao userDao = new UserDao();
					userDao.insertUser(user);
					users.add(user);
					JOptionPane.showMessageDialog(null, "注册成功请登陆", "信息", JOptionPane.INFORMATION_MESSAGE);
				}
			}
		}

	}
}
